import '06-Class.dart';

/// Dart 没有 interface 关键字。相反，所有的类都隐式定义了一个接口。因此，任意类都可以作为接口被实现。
class MockSpaceship implements Spacecraft {
  MockSpaceship(this.launchDate, this.name);

  @override
  DateTime launchDate;

  @override
  String name;

  @override
  void describe() {
    // TODO: implement describe
  }

  @override
  // TODO: implement launchYear
  int get launchYear => throw UnimplementedError();
}

// 抽象类
abstract class Describable {
  void describe();

  void describeWithEmphasis() {
    print('=========');
    describe();
    print('=========');
  }
}

/// 扩展抽象类
class Describable2 extends Describable {
  @override
  void describe() {
    // TODO: implement describe
  }
}

/// implements 实现会要求重写所有方法 extends不会，extends只需要实现抽象类未实现的方法
class Describable3 implements Describable {
  @override
  void describe() {
    // TODO: implement describe
  }

  @override
  void describeWithEmphasis() {
    // TODO: implement describeWithEmphasis
  }
}
